package com.ict.util;

import cn.hutool.core.util.IdUtil;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;

/**
 * 随机字符串生成工具类
 */
public class GeneratorCode {

    private static final AtomicLong SEQUENCE = new AtomicLong(0); // 分布式场景需替换为Redis或DB自增

    private static final String FORMAT_DATE = "yyyyMMddHHmmss";
    /**
     *
     * @return 订单号ID
     */
    public static String generateOrderSn() {
        String simpleUUID = IdUtil.simpleUUID();
        SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATE);
        return sdf.format(new Date()) + simpleUUID;
    }



    /**
     * 生成带前缀的全局唯一SKU（UUID+时间戳+原子序列）
     * @param prefix 前缀（如"CLOTH-"）
     */
    public static String generateWithPrefix(String prefix) {
        // 时间戳部分（精确到毫秒）
        String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"));

        // UUID部分（取前4位降低碰撞概率）
        String uuid = IdUtil.simpleUUID().substring(0,4);

        // 拼接：前缀 + 时间戳 + 节点ID + UUID片段
        return String.format("%s%s%s", prefix, timestamp, uuid);
    }

}
